package com.sugon.modules.alarm.service;

import com.sugon.entity.AlarmCodeBaseEntity;

import java.util.List;
import java.util.Map;

/**
 * 设备报警代码库Service接口
 *
 * @author YuXD
 * @date 2023-02-09
 */
public interface AlarmCodeBaseService {

    /**
     * 查询指定设备下是否存在对应的报警代码
     *
     * @param faultCategoryId 报警故障分类ID
     * @param devId           设备ID
     * @param alarmCode       报警代码ID
     * @return
     */
    AlarmCodeBaseEntity query(String faultCategoryId, String devId, String alarmCode);

    /**
     * 查询指定设备的报警代码库
     *
     * @param alarmCategoryId 报警分类ID
     * @param devId           设备ID
     * @param alarmCode       报警故障代码
     * @return
     */
    List<AlarmCodeBaseEntity> queryList(String alarmCategoryId, String devId, String alarmCode);

    /**
     * 查询指定设备下是否存在对应的报警代码，每个报警代码在该设备下是唯一的
     * 如果不存在，则创建后在返回
     * 否则则直接返回
     *
     * @param faultCategoryId 报警故障分类ID
     * @param devId           设备ID
     * @param alarmCode       报警代码
     * @param alarmDesc       报警描述
     * @param isCreate        不存在时是否创建 true创建，false不创建
     * @return
     */
    AlarmCodeBaseEntity queryOrCreateIfNotExists(String faultCategoryId, String devId, String alarmCode, String alarmDesc, boolean isCreate);

    /**
     * 根据主键查询实体
     *
     * @param id 主键
     * @return 实体
     */
    AlarmCodeBaseEntity queryObject(String id);

    /**
     * 分页查询
     *
     * @param map 参数
     * @return list
     */
    List<AlarmCodeBaseEntity> queryList(Map<String, Object> map);

    /**
     * 分页统计总数
     *
     * @param map 参数
     * @return 总数
     */
    int queryTotal(Map<String, Object> map);

    /**
     * 保存实体
     *
     * @param alarmCodeBase 实体
     * @return 保存条数
     */
    int save(AlarmCodeBaseEntity alarmCodeBase);

    /**
     * 根据主键更新实体
     *
     * @param alarmCodeBase 实体
     * @return 更新条数
     */
    int update(AlarmCodeBaseEntity alarmCodeBase);

    /**
     * 根据主键删除
     *
     * @param id
     * @return 删除条数
     */
    int delete(String id);

    /**
     * 根据主键批量删除
     *
     * @param ids
     * @return 删除条数
     */
    int deleteBatch(String[] ids);
}
